module.exports = {
  /**
   * 禁止使用 console
   * @category Possible Errors
   */
  'no-console': 'error',

  /**
   * 申明后不再被修改的变量必须使用 const 来申明
   * @category ECMAScript 6
   * @reason 没必要强制要求
   * @fixable
   */
  'prefer-const': 'error',

  /**
   * 禁止未定义的表达式
   * @category Best Practices
   */
  'no-undef': [
    'error',
    {
      typeof: true,
    },
  ],

  /**
   * 禁止无用的表达式
   * @category Best Practices
   */
  'no-unused-expressions': [
    'error',
    {
      allowShortCircuit: true,
      allowTernary: true,
      allowTaggedTemplates: true,
    },
  ],

  /**
   * 禁止出现没用的 label
   * @category Best Practices
   * @fixable
   */
  'no-unused-labels': 'error',

  /**
   * 定义过的变量必须使用
   * @category Variables
   */
  'no-unused-vars': [
    'error',
    {
      vars: 'all',
      args: 'none',
      caughtErrors: 'none',
      ignoreRestSiblings: true,
    },
  ],

  /**
   * require 必须在全局作用域下
   * @category Node.js and CommonJS
   * @reason 条件加载很常见
   */
  'global-require': 'off',

  /**
   * 禁止变量名出现下划线
   * @category Stylistic Issues
   * @reason 下划线在变量名中很常用
   */
  'no-underscore-dangle': 'off',
};
